using System;

namespace Brilliance
{
    public interface IContainer
    {
        T Get<T>();
        void AddComponent<Interface, Concrete>() where Concrete : Interface;
        void AddComponent(string key, Type service, Type type);
        void AddComponentInstance(Type serviceType, object instance);
        void AddComponentInstance<Interface>(Interface instance);
        void AddComponentInstance(string key, Type serviceType, object instance);

        void AddEventAgentConfiguration(string eventAgent);
        bool HasComponent(string key);
        void AddComponentConfiguration(string componentKey, string parameterName, string parameterKey);
    }
}